package swb.api.com.service;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import swb.api.com.repository.dto.SysUser;
import swb.api.com.repository.dto.UserInfo;
import swb.api.com.vo.req.AdminCreateRequest;

import java.math.BigDecimal;
import java.util.List;

public interface SysUserService {

    /**
     * 分页查询所有用户信息
     * @param pageable 分页参数
     * @return 用户信息分页结果
     */
    Page<UserInfo> findAll(Pageable pageable);

    /**
     * 更新用户余额
     * @param id 用户ID
     * @param newBalance 新余额
     */
    void updateBalance(Long id, BigDecimal newBalance);

    /**
     * 根据用户名查找用户
     * @param username 用户名
     * @return 系统用户对象
     */
    SysUser findByUsername(String username);

    /**
     * 创建管理员账户
     * @param adminCreateRequest 管理员创建请求
     */
    void createAdmin(AdminCreateRequest adminCreateRequest);

    /**
     * 保存用户角色关联
     * @param sysUserRole 用户角色关联对象
     */
    void saveUserRole(swb.api.com.repository.dto.SysUserRole sysUserRole);

    /**
     * 保存用户
     * @param user 系统用户对象
     */
    void save(SysUser user);
}
